package net.aiion.weave.spi.bytecode;

public interface BytecodeSource
{
    void setProperty(String aName, Object aValue);

    void removeProperty(String aName);

    Object getProperty(String aName);

    <T> T getProperty(String aName, Class<T> aType);

    void addSink(BytecodeSink aBytecodeSink);

    // TODO something like that... implement this also for weave-xml
    void startSourcing();

    void postponeSourcing();

    void postponeSourcing(ResumptionCondition aResumptionCondition);

    void cancelSourcing();

    boolean isStarted();

    boolean isPostponed();

    ResumptionCondition getResumptionCondition();

    boolean isCancelled();
}
